home *** CD-ROM | disk | FTP | other *** search
- ;
- ; HTTPGetCLI - V1.00 - Written by Rob Hutchinson as an Example for
- ; the SDSTCPSocketLib.obj.
- ; 22.03.2000 - 01:30
- ;
- ; DESCRIPTION:
- ; Download a file from the internet via HyperText Transfer Protocol.
- ;
- ; PROTOCOL:
- ; HyperText Transfer Protocol (HTTP) Port 80
- ;
- ; ARGUMENTS:
- ; USAGE: HTTPGet <URL$>,<DownloadTo$>
- ;
- ; TO COMPILE REQUIRES:
- ; SDSTCPSocketLib.obj and SDSTCP.RES
- ;
- ; For further help and assistance email: rob@satanicdream.com
- ;
-
- NPrint "HTTPGet - CLI Version, Written by Rob Hutchinson of Satanic Dreams Software."
- NPrint "This program uses the SDSTCPSocketLib.obj library for Blitz. For updates"
- NPrint "visit: http://www.satanicdreams.com/"
- NPrint Chr$(10)+"V1.02 Written 22.03.2000 - 01:30."+Chr$(10)
-
- If NumPars<>2
- NPrint "ERROR #1: Wrong number of parameters."
- NPrint ""
- NPrint "USAGE: HTTPGet <URL$>,<DownloadTo$>"
- NPrint ""
- End
- Else
- HTTPFile$=Par$(1)
- Outfile$=Par$(2)
- If WriteFile(0,Outfile$)=False
- NPrint "ERROR #2: Cannot open file for output, please choose another."
- EndIf
- EndIf
-
- h=Instr(HTTPFile$,"/",8)
- host$=Mid$(HTTPFile$,8,h-8)
- doc$=Mid$(HTTPFile$,h,Len(HTTPFile$))
- getstr$="GET "+HTTPFile$+Chr$(13)+Chr$(10)
-
- If TCPOpen
-
- failtest.l=TCPCreateSocket(0,Off,#TCP_SOCK_Read|#TCP_SOCK_Write,20,0)
-
- If failtest.l = #TCP_SOCK_Ok
- NPrint "Attempting to connect socket to: "+host$+" on port 80 (HTTP).."
- NPrint "Looking up hostname."
- OurSockStatus.l=TCPConnectSocket(0,host$,80)
- If OurSockStatus.l=#TCP_CONN_CONNECTING
- NPrint "Socket connecting....."
-
- Repeat
- Delay_ 1
- Tev.l=TCPEvent
- If Tev.l>0
- If (OurSockStatus.l=#TCP_CONN_CONNECTING) AND TCPIsReadEvent(0) OR TCPIsWriteEvent(0)
-
- tcperr.l=TCPSocketError(0)
- If tcperr.l
- DefaultOutput : NPrint "ERROR #",tcperr.l,": ",TCPErrorString$
- quitit.b=1
- Else
- Print "Connected to: ",host$," on port 80."+Chr$(10)+Chr$(10)+"Progress: "
- OurSockStatus.l=0
- TCPSetStates 0,#TCP_SOCK_Read
- TCPNPrint 0,getstr$
- FileOutput 0
- ResetTimer
- EndIf
- Else
- If Tev
- If TCPIsReadEvent(0)
- tcperr.l=TCPSocketError(0)
- If tcperr.l
- DefaultOutput : NPrint "ERROR #",tcperr.l,": ",TCPErrorString$
- quitit.b=1
- Else
- Reed$=TCPReadSocket$(0)
- If Reed$=""
- CloseFile 0
- quitit.b=1
-
- DefaultOutput : NPrint Chr$(10)+Chr$(10)+"File transfer complete..."
- NPrint "File ",Outfile$," was ",FileSizeCount.l," bytes and took ",Ticks/50," secs to download."
- NPrint "Program terminated."
- Else
- FileSizeCount.l+TCPLastReadSize
- DefaultOutput : Print "."
- FileOutput 0
- Print Reed$
- EndIf
- EndIf
- EndIf
- EndIf
- EndIf
- EndIf
-
- Until quitit.b=1
- TCPRemoveSocket 0
- Else
- Select OurSockStatus.l
- Case #TCP_CONN_FailHostResolve
- NPrint "ERROR #3: Unable to resolve hostname. FAILED!"
- Case #TCP_CONN_FailNoConnect
- NPrint "ERROR #4: Not connected. FAILED!"
- Case #TCP_CONN_FailError
- NPrint "ERROR #5: Fatal error. FAILED!"
- End Select
- EndIf
-
- Else
-
- Select failtest.l
- Case #TCP_SOCK_FailTimeout
- NPrint "ERROR #6: Could not set timeout. FAILED!"
- Case #TCP_SOCK_FailAsync
- NPrint "ERROR #7: Could not set async. FAILED!"
- Case #TCP_SOCK_FailNoSock
- NPrint "ERROR #8: Could not create sock. FAILED!"
- End Select
-
- EndIf
- EndIf
-
- TCPClose
- End
-
-